package com.lingyu.jsjx.domain;

import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 专家任职档案对象 jsjx_expert_employment
 * 
 * @author ruoyi
 * @date 2025-08-08
 */
@Data
@TableName("jsjx_expert_employment")
public class ExpertEmployment extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 专家记录ID */
    @TableId(value = "expert_id", type = IdType.AUTO)
    private Long expertId;

    /** 专家姓名 */
    @Excel(name = "专家姓名")
    private String expertName;

    /** 专家类型 */
    private Long expertTypeId;
    @Excel(name = "专家类型")
    private String expertTypeName;

    /** 专家领域（下拉选择） */
    private Long expertFieldId;

    /** 专家领域（下拉选择） */
    @Excel(name = "专家领域")
    private String expertFieldName;

    /** 聘任单位 */
    @Excel(name = "聘任单位")
    private String organization;

    /** 工作形式（下拉选择） */
    private Long workModeId;

    /** 工作形式（下拉选择） */
    @Excel(name = "工作形式")
    private String workModeName;

    /** 聘任开始日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "聘任开始日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startDate;

    /** 聘任结束日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "聘任结束日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 职业资格证书 */
    private String certificateFileId;

    /** 任职状态（下拉选择）（续聘/新聘等） */
    private Long employmentStatusId;

    /** 任职状态（下拉选择）（续聘/新聘等） */
    @Excel(name = "任职状态")
    private String employmentStatusName;

    /** 专家意见摘要（200字以内） */
    @Excel(name = "专家意见摘要")
    private String opinionSummary;

    /** 指导成果摘要（200字以内） */
    @Excel(name = "指导成果摘要")
    private String guidanceAchievements;

    @TableField(exist = false)
    private List<FileInfo> certificateFileList;
    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("expertId", getExpertId())
            .append("expertName", getExpertName())
            .append("expertTypeId", getExpertTypeId())
            .append("expertTypeName", getExpertTypeName())
            .append("expertFieldId", getExpertFieldId())
            .append("expertFieldName", getExpertFieldName())
            .append("organization", getOrganization())
            .append("workModeId", getWorkModeId())
            .append("workModeName", getWorkModeName())
            .append("startDate", getStartDate())
            .append("endDate", getEndDate())
            .append("certificateFileId", getCertificateFileId())
            .append("employmentStatusId", getEmploymentStatusId())
            .append("employmentStatusName", getEmploymentStatusName())
            .append("opinionSummary", getOpinionSummary())
            .append("guidanceAchievements", getGuidanceAchievements())
            .append("createBy", getCreateBy())
            .append("createByName", getCreateByName())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateByName", getUpdateByName())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
